package com.lichao.utils;

import java.sql.Connection;
import java.util.LinkedHashMap;
import java.util.Map;

public class ConnectionPool {

    private Map<String, Connection> connectionMap = new LinkedHashMap<>();
    private int currentIndex = 0; // 当前索引，用于轮询

    /**
     * 获取下一个Connection，如果到达末尾则从头开始
     * @return 下一个Connection，如果没有可用的则返回null
     */
    public Connection getNextConnection() {
        if (connectionMap.isEmpty()) {
            return null;
        }

        // 计算当前索引，确保它不会超出Map的大小
        int index = currentIndex % connectionMap.size();

        // 遍历Map以找到当前索引对应的Connection（尽管在LinkedHashMap中这不是必需的，但为了说明目的）
        // 但在实际情况下，由于LinkedHashMap保持插入顺序，我们可以直接访问
        Connection connection = null;
        int i = 0;
        for (Map.Entry<String, Connection> entry : connectionMap.entrySet()) {
            if (i == index) {
                connection = entry.getValue();
                break;
            }
            i++;
        }

        // 或者，由于我们知道是LinkedHashMap，我们可以直接访问：
        // Map.Entry<String, Connection> entry = connectionMap.entrySet().toArray(new Map.Entry[0])[index];
        // Connection connection = entry.getValue();

        // 移动到下一个索引
        currentIndex++;

        return connection;
    }

}